<?php

class Users_RegisterAction extends SrsUsersBaseAction
{
	public function isSecure()
	{
		return false;
	}
	
	public function executeRead()
	{
		return 'Input';
	}

	public function executeWrite(AgaviRequestDataHolder $rd)
	{
		$userData = $rd->getParameter('user');

		$key = hash('sha256', uniqid(microtime()));

		$user = new User();
		$user->role       = 'member';
		$user->name       = $userData['name'];
		$user->email      = $userData['email'];
		$user->password   = hash('sha256', $userData['password']);
		$user->active     = false;
		$user->confirmKey = $key;
		$user->phone      = $userData['phone'];

		try
		{
			$user->save();

			$this->sendConfirmEmail($user);
		}
		catch (Doctrine_Exception $x)
		{
			$this->addError('email_taken', 'user[email]', 'Podany adres e-mail już jest wykorzystany.');

			return 'Error';
		}

		$this->setAttribute('key', $key);
		$this->setAttribute('user', $user);

		return 'Success';
	}

	private function sendConfirmEmail(User $user)
	{
		$url = $this->createUrl($user->email, $user->confirmKey);
		
		$message = <<<MSG
Witaj, {$user->name}!

Ty lub ktoś podający się za Ciebie zarejestrował się w Systemie Rezerwacji Sal Uniwersytetu Warmińsko-Mazurskiego.
Jeżeli to nie byłeś Ty, zignoruj ten e-mail. W przeciwnym wypadku kliknij na poniższy odnośnik:
{$url}
lub wpisz poniższy kod w odpowiednie pole formularza, który ukazał się po wysłaniu formularza rejestracji:
{$user->confirmKey}

W razie jakichkolwiek wątpliwości prosimy o kontakt.

Z poważaniem, SRS-UWM.
MSG;

		$mailer = Mailer::fromConfig('app.mailer');
		$mailer->createMessage('Potwierdzenie rejestracji w SRS-UWM')
		       ->addTo($user->email)
		       ->setBody($message);
		$mailer->send();
	}

	private function createUrl($email, $key)
	{
		$rq = $this->context->getRequest();

		return $rq->getUrlScheme()
			. '://' . $rq->getUrlAuthority()
			. str_replace('&amp;', '&', $this->context->getRouting()->gen('user.confirm', array('user' => $email, 'key' => $key)));
	}
}